#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <unistd.h>
#include <signal.h>

void signal_process(int signum){
    printf("----收到子进程的信号%d---\n", signum);
}

int main(int argc, char const *argv[])
{
    // 定义信号集
    sigset_t sigs;
    sigemptyset(&sigs); // 清空信号集
    sigaddset(&sigs, SIGKILL);
    sigaddset(&sigs, SIGQUIT);
    sigaddset(&sigs, SIGINT);
    sigaddset(&sigs, SIGUSR1);
    // 解除信号屏蔽，确认信号能被处理
    sigprocmask(SIG_UNBLOCK, &sigs, NULL);

    // 注册信号处理函数
    signal(SIGKILL, signal_process); // 无法影响信号处理行为， 同SIGSTOP
    signal(SIGQUIT, signal_process);
    signal(SIGINT, signal_process);  
    signal(SIGUSR1, signal_process);
    while(1) sleep(1);
    return 0;
}
